manifest 文件和資料夾結構是創建和組織模組的核心元素。manifest 是模組的描述文件,負責定義模組的名稱、版本、依賴項、資料夾、文件等基本屬性。了解這些資料夾和文件的用途對開發 Odoo 模組非常重要,尤其是針對 ERP 和電商相關的應用。
當創建 Odoo 模組時,通常會包含以下主要的資料夾與文件:
用途: 這是 Odoo 模組的描述文件,定義模組的所有關鍵屬性,例如名稱、版本、作者、依賴的模組以及需要加載的數據文件。
內容範例:
{
'name': 'E-commerce Extension',
'version': '1.0',
'author': 'Your Company',
'depends': ['base', 'website_sale'], # 依賴的模組,如基礎模組和電商模組
'data': [
'views/product_template_views.xml', # 產品模板的自訂視圖
'security/ir.model.access.csv', # 權限控制
],
'installable': True, # 是否可安裝
}
用途: 存放定義 Odoo 模型的 Python 文件。模型用於定義資料結構(如產品、客戶、訂單等)的邏輯與規則。
ERP 範例: 在 ERP 系統中,你可以建立 models/product.py 來擴展或自訂產品模型。
from odoo import models, fields
class ProductTemplate(models.Model):
_inherit = 'product.template'
product_sku = fields.Char(string="Product SKU")
用途: 用來存放 XML 格式的視圖定義文件,這些文件負責定義如何在 Odoo UI 上顯示資料。
電商範例: views/product_template_views.xml 可以定義電商產品的自訂視圖。
<odoo>
<record id="view_product_template_form_inherit" model="ir.ui.view">
<field name="name">product.template.form.inherit</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_only_form_view"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='list_price']" position="after">
<field name="product_sku"/>
</xpath>
</field>
</record>
</odoo>
用途: 存放權限控制文件,例如 ir.model.access.csv,用於定義不同用戶角色對模型的訪問權限。
範例: 定義 ERP 中員工對產品模型的讀取與修改權限。
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_manager,access.product.manager,model_product_template,base.group_user,1,1,1,1
用途: 用於存放初始化數據(如預設設定值或預載資料),這些數據會在模組安裝時自動加載。
電商範例: data/ecommerce_data.xml 可以存放一些預設的產品資料或分類。
用途: 用來存放靜態文件(如圖片、CSS、JavaScript 等),這些文件會在 Odoo 的前端顯示。
電商範例: static/src/img/ 可以存放產品圖片,或 static/src/css/ 可以自訂網站樣式。
用途: 如果你的模組需要處理前端或網站頁面的請求,這個資料夾會用來定義控制器邏輯(主要是 HTTP 請求的處理)。
電商範例: 在 controllers/main.py 定義自訂的購物車功能。